package BubbleSort;/*
 *
 * @author 陈粒
 * @version 创建时间：2021/7/1 20:24
 */
/**
 * 优化方案创建一个Boolean变量，外层for循环时判断这个变量
 * 当第一个数组元素小于后面的数组元素时，这个优化方案无效且输出错误
 */

import java.util.*;

public class New_BubbleSort {
    public static void main(String[] args) {
        int[] a = new int[]{45, 12, 16, 78, 24, 55};
        int[] NewA = method(a);
        System.out.println("排序完的结果为：" + Arrays.toString(NewA));
    }

    public static int[] method(int[] b) {
        for (int i = 1; i <= b.length-1; i++) {//最多比较数的数量-1次，所以这里是b.length-1
            System.out.println("第" + i + "轮:");
            boolean flag = false;
            for (int j = 0; j < b.length - 1; j++) {//从数组下标0开始比较，最后一个数组元素不用比较，所以这里是j < b.length - 1
                if (b[j] > b[j + 1]) {
                    int t = b[j];
                    b[j] = b[j + 1];
                    b[j + 1] = t;
                    flag = true;
                }
            }
            System.out.println("第" + i + "轮的结果:" + Arrays.toString(b));
            if (flag == false) {
                return b;
            }
        }
        return b;
    }
}